iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0

前言

走到第十天,我們已經從 Python 基礎語法、函式、物件導向,一路學到非同步與錯誤處理。
今天,我們要讓程式真正「連上外部世界」——用 Flask 建立一個簡單的 後端網頁伺服器

生活比喻:

  • 前面九天學的程式,就像你在家裡練習做菜。
  • Flask 就是「開一個小餐車」,把餐點端出去,讓別人能點餐、品嚐。
  • 這代表你的程式不再只是「自己用」,而是能透過網路與使用者互動。

小提醒:

  • Flask 預設的 5000 port 在 macOS 上有時會被防火牆或其他程式卡住。
  • 如果遇到無法連線,可以改成 8000、8080 或其他常見 port。

今天的目標是:

  1. 了解 Flask 的基本概念。
  2. 寫一個最小的 Flask 範例並在瀏覽器測試。
  3. 嘗試回應 JSON,模擬 API 的行為。
  4. 用心得,替這 10 天做一個中場小結。

1. Flask 是什麼?

  • Flask 是 Python 的輕量級 Web 框架。
  • 用來快速建立 後端 API小型網站
  • 適合初學者上手,概念清楚、程式碼簡潔。

生活比喻:
把 Flask 想像成「小餐車」:

  • 你決定菜單(路由與功能)。
  • 客人點什麼,就回應什麼。
  • 不像大型餐廳(Django)有完整套餐,Flask 提供的是「最基本但好用」的工具。

2. 最小 Flask 範例

建立一個檔案 app.py

from flask import Flask

app = Flask(__name__)

@app.route("/")
def home():
    return "哈囉,這是我的第一個 Flask 網站!"

if __name__ == "__main__":
    # 預設 port=5000,但 macOS 上常會被防火牆或系統佔用
    app.run(debug=True, port=8000)

執行:

python app.py

打開瀏覽器輸入:http://127.0.0.1:8000/
即可看到畫面:

哈囉,這是我的第一個 Flask 網站!

補充說明

  • Flask 預設使用 5000 port
  • 但在 macOS 上,5000 常常被防火牆或其他服務卡住,導致無法連線。
  • 解法:手動指定其他常用 port,例如 8000、8080、3000

3. Flask 回應 JSON

後端最常見的用途之一是提供 API。

from flask import Flask, jsonify

app = Flask(__name__)

@app.route("/hello/<name>")
def hello(name):
    return jsonify({
        "message": f"你好,{name}!",
        "status": "success"
    })

if __name__ == "__main__":
    app.run(debug=True, port=8000)

打開瀏覽器:

http://127.0.0.1:8000/hello/Jr

會回應 JSON:

{
  "message": "你好,Jr!",
  "status": "success"
}

心得與小結

十天的學習,像是一段暖身跑。
從最基礎的變數、條件判斷,到函式、物件導向,再到非同步、例外處理,最後透過 Flask 觸碰到「後端世界」,我感覺自己已經不再只是單純寫幾行小程式,而是能把程式放進生活情境中思考。

這十天帶給我的啟發:

  • 程式語法不是目的,而是工具。
    條件判斷、迴圈、錯誤處理,都在提醒我:思考邏輯、規劃流程才是核心。
  • 生活與程式是互相呼應的。
    錯誤處理像是給人生留後路,非同步像是邊等邊做事,Flask 則是學會把自己的成果分享出去。
  • 基礎已經有了,接下來要開始堆高。
    這十天像是在打地基,後面 20 天則是要慢慢蓋樓層。

生活比喻:
這十天就像「搭公車出發的前半段路」,已經經過幾個重要站牌(語法、邏輯、物件導向),現在車子正要進入市區(更多應用與實作)。
真正的旅程還很長,接下來的 20 天,會有更多風景與挑戰在等著我。


上一篇
Day 9:錯誤與例外處理(try-except)
系列文
一塊一塊拼湊的 AI 樂高世界之旅10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言